package com.dc.base.utils;

import android.content.Context;
import android.content.res.Resources;

import androidx.annotation.ArrayRes;
import androidx.annotation.StringRes;

import java.util.IllegalFormatException;

/**
 * @author 冰柠檬dc
 */
public class StringUtil {

    /**
     * 判断字符序列是否为null或长度为0;
     *
     * @param s CharSequence
     * @return boolean
     */
    public static boolean isEmpty(CharSequence s) {
        return s == null || s.length() == 0;
    }

    /**
     * 判断字符串是否为null或全为空格
     *
     * @param s String
     * @return boolean
     */
    public static boolean isTrimOrEmpty(String s) {
        return s == null || s.trim().length() == 0;
    }

    /**
     * 判断字符串是否为null或全为空白字符（空白字符包括：空格、换行符、tab键）
     *
     * @param s String
     * @return boolean
     */
    public static boolean isSpace(String s) {
        if (s == null) {
            return true;
        }
        for (int i = 0; i < s.length(); i++) {
            if (!Character.isWhitespace(s.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * 获取字符串资源
     *
     * @param context Context
     * @param id      int
     * @return String
     */
    public static String getString(Context context, @StringRes int id) {
        return getString(context, id, (Object[]) null);
    }

    /**
     * 获取字符串资源
     *
     * @param context    Context
     * @param id         int
     * @param formatArgs 参数
     * @return String
     */
    public static String getString(Context context, @StringRes int id, Object... formatArgs) {
        try {
            return format(context.getString(id), formatArgs);
        } catch (Resources.NotFoundException e) {
            return String.valueOf(id);
        }
    }

    /**
     * 格式化字符串
     *
     * @param str  String
     * @param args 参数
     * @return String
     */
    public static String format(String str, Object... args) {
        String text = str;
        if (text != null && args != null && args.length > 0) {
            try {
                text = String.format(str, args);
            } catch (IllegalFormatException e) {
                e.printStackTrace();
            }
        }
        return text;
    }

    /**
     * 获取字符数组资源
     *
     * @param context Context
     * @param id      int
     * @return String[]
     */
    public static String[] getStringArray(Context context, @ArrayRes int id) {
        try {
            return context.getResources().getStringArray(id);
        } catch (Resources.NotFoundException e) {
            return new String[]{String.valueOf(id)};
        }
    }

}
